<?php
/**
 * @desc Alle Funktionen Speichern und Lesen von Konfigurationsdaten
 */
class config_system
{
	var $_ini_array = array(); //zur Ablage von Konfigurationsdaten aus config.ini

	//singleton
	private static $instance = null;
	//initialisierung nur über getInstance()
	protected function __construct()
	{
		self::setConfig();
	}
	//kein Klonen
	private function __clone(){}

	public static function getInstance()
	{
		if(self::$instance == null)
		{
			self::$instance = new config_system();
		}
		return self::$instance;
	}

	/**
	 * @desc liest die Werte aus der config.ini
	 * @return array 
	 */
	public function loadConfig()
	{
		return parse_ini_file("config.ini", TRUE);	
	}

	/**
	 * @des überträgt Konfigurationsdaten in $_ini_array
	 */
	public function setConfig()
	{
		$this->_ini_array = self::loadConfig();
	}

	/**
	 * @desc Gibt über Sektion und Schlüssel gespeierte Daten zurück
	 * @param String $section
	 * @param String $key
	 * @return boolean - wenn es keine Zuordnung gibt.
	 * @return String 
	 */
	public function getConfig($section,$key)
	{
		if(!key_exists($key,$this->_ini_array[$section]))
		{
			return false;
		}

		return $this->_ini_array[$section][$key];
	}

	public function convertConfig($section,$key)
	{
		$new     = array();
		$config  = self::getConfig($section,$key);
		$keys    = explode('|',$config[0]);

		foreach($config as $key=>$value)
		{
			if($key == 0)
			{
				continue;
			}

			$values = explode('|',$value);
			for($i=0;$i<count($values);$i++)
			{
				$new[$key][$keys[$i]] = $values[$i];
			}
		}

		return $new;
	}
}